1476E - Pattern Matching - CodeForces Solution


bitmasks data structures dfs and similar graphs hashing sortings strings *2300

Please click on ads to support us..

Python Code:

from collections import deque
import sys, os, io
input = io.BytesIO(os.read(0, os.fstat(0).st_size)).readline

def topological_sort():
    g = []
    q = deque()
    cnt = [0] * (n + 1)
    for i in range(1, n + 1):
        for j in G[i]:
            cnt[j] += 1
    for i in range(1, n + 1):
        if not cnt[i]:
            q.append(i)
    while q:
        i = q.popleft()
        g.append(i)
        for j in G[i]:
            cnt[j] -= 1
            if not cnt[j]:
                q.append(j)
    return g

n, m, k = map(int, input().split())
x = [1]
for _ in range(k - 1):
    x.append(27 * x[-1])
d = dict()
for v in range(1, n + 1):
    s = list(input().rstrip())
    u = 0
    for i, j in zip(x, s):
        u += i * max(0, j - 96)
    d[u] = v
pow2 = [1]
for _ in range(k):
    pow2.append(2 * pow2[-1])
l = pow2[k]
G = [[] for _ in range(n + 1)]
for _ in range(m):
    s, mt = input().rstrip().split()
    v = set()
    s, mt = list(s), int(mt)
    for i in range(l):
        u = 0
        for j in range(k):
            if i & pow2[j]:
                u += x[j] * (s[j] - 96)
        if u in d:
            v.add(d[u])
    if not mt in v:
        ans = "NO"
        print(ans)
        exit()
    for i in v:
        if i ^ mt:
            G[mt].append(i)
p = topological_sort()
ans = "YES" if not len(p) ^ n else "NO"
print(ans)
if ans == "YES":
    sys.stdout.write(" ".join(map(str, p)))


Comments

Submit
0 Comments
More Questions

1651D - Nearest Excluded Points
599A - Patrick and Shopping
237A - Free Cash
1615B - And It's Non-Zero
1619E - MEX and Increments
34B - Sale
1436A - Reorder
1363C - Game On Leaves
1373C - Pluses and Minuses
1173B - Nauuo and Chess
318B - Strings of Power
1625A - Ancient Civilization
864A - Fair Game
1663B - Mike's Sequence
448A - Rewards
1622A - Construct a Rectangle
1620A - Equal or Not Equal
1517A - Sum of 2050
620A - Professor GukiZ's Robot
1342A - Road To Zero
1520A - Do Not Be Distracted
352A - Jeff and Digits
1327A - Sum of Odd Integers
1276A - As Simple as One and Two
812C - Sagheer and Nubian Market
272A - Dima and Friends
1352C - K-th Not Divisible by n
545C - Woodcutters
1528B - Kavi on Pairing Duty
339B - Xenia and Ringroad